package com.stylefeng.guns.rest.common.persistence.model;

import java.io.Serializable;
import java.util.List;

import lombok.Data;

@Data
public class PageRows<T> implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private int currentPage;
	// 一共有多少条记录
	private int pageSize;
	// 当前第几页数据
	private int totalRecord;
	// 一共多少页记录
	private int totalPage;
	// 要显示的数据，使用泛型
	private List<T> dataList;

	public PageRows() {
		super();
	}

	public PageRows(int pageSize, int currentPage, int totalRecord, int totalPage, List<T> dataList) {
		super();
		this.pageSize = pageSize;
		this.currentPage = currentPage;
		this.totalRecord = totalRecord;
		this.totalPage = totalPage;
		this.dataList = dataList;
	}

	public PageRows(int pageNum, int pageSize, List<T> sourceList) {
		if (sourceList == null || sourceList.size() <= 0) {
			return;
		}

		// 总记录条数
		this.totalRecord = sourceList.size();
		// 每页显示多少条记录
		this.pageSize = pageSize;
		// 获取总页数
		this.totalPage = this.totalRecord / this.pageSize;
		if (this.totalRecord % this.pageSize != 0) {
			this.totalPage += 1;
		}

		// 当前第几页数据
		this.currentPage = this.totalPage < pageNum ? this.totalPage : pageNum;

		// 起始索引
		int fromIndex = this.pageSize * (this.currentPage - 1);
		// 结束索引
		int toIndex = this.pageSize * this.currentPage > this.totalRecord ? this.totalRecord
				: this.pageSize * this.currentPage;

		this.dataList = sourceList.subList(fromIndex, toIndex);
	}

}
